package com.itany.corejava.code11_io.字节流;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月27日 13:37
 */
public class Test04_对象输入输出流 {
    public static void main(String[] args) {
        // test01();
        test02();
    }
    public static void test01(){
        ObjectOutputStream oos=null;
        try {


            //此时需要对User类进行序列化
            // 序列化:将对象转换成二进制数据，可以通过一个文件来保存序列化后的二进制流
            User user=new User(1,"admin","2211212");
            User user2=new User(2,"coco","12345");
            User user3=new User(3,"uu","123456");
            List users=new ArrayList(Arrays.asList(user,user2,user3));
            // System.out.println(users);

            //可以指定一个文件
            OutputStream out=new FileOutputStream("users.data");

            // 包装流: 对一个节点流进行操作
             oos=new ObjectOutputStream(out);//对节点流进行包装

            //写入的对象可以是任意类型
            // oos.writeObject(1);
            // oos.writeObject(true);
            // oos.writeObject("alice");
            // oos.writeObject("lucy");
            // oos.writeObject(89);

            oos.writeObject(users);


            //刷新流
            oos.flush();




        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(oos!=null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void test02(){
        try(
                ObjectInputStream in=new ObjectInputStream(new FileInputStream("users.data"));
        ){
            Object obj=in.readObject();
            System.out.println(obj);
            // Object obj2=in.readObject();
            // System.out.println(obj2);
            // Object obj3=in.readObject();
            // System.out.println(obj3);
            // Object obj4=in.readObject();
            // System.out.println(obj4);
            // Object obj5=in.readObject();
            // System.out.println(obj5);



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }


}
